// ZTEM_Server.h: interface for the CEM9336 class.
//
//////////////////////////////////////////////////////////////////////

#ifndef SDSET_H
#define SDSET_H

typedef struct DAQTIME//采集时间段 
{
	//开始时间
	I8 startS;//秒
	I8 startM;//分
	I8 startH;//时
	//结束时间
	I8 endS;//秒
	I8 endM;//分
	I8 endH;//时
}DaqTime;

typedef struct SDSET
{
	short version;//版本号
	//采集时间间隔设置
	I16 intervalMS;//毫秒
	I8 intervalS;//秒
	I8 intervalM;//分
	I8 intervalH;//小时
	I8 daqStyle; //daqStyle：采集方式：
					//0下位机上电启动采集；
					//1上位机控制启停
	I8 startMode;//启动方式 0 软件启动AD转换（慢速采集） 1 内时钟启动AD转换 2 外时钟启动AD转换 3 外部高电平启动AD采集
	I32 groupCount;//在高速采集时，从fifo中读取多少组数据读取一次不进入fifo的数据（io、ct、ec）
	I32 isPSync;//0非伪同步，1伪同步
	I32 chFreq;//通道切换采集频率
	I32 groupFreq;//组采集频率，伪同步有效
	I8 adBeginCh;//AD起始通道
	I8 adEndCh;//AD结束通道
	I8 adRange;//AD采集范围
	I8 adGain;//AD 增益
	I8 adEndMode;//AD单双端
	I8 ioInFifo;//io1~io16是否进入fifo
	I8 ioDir[4];//开关量方向
	I8 ctMode[6];//计数器方式
	I32 ctGateFreq[6];//门控信号频率
	I8 ad[18];//对应ad通道是否存盘，0禁止，1允许
	I8 io[4];//对应组的开关量是否存盘，0禁止，1允许
	I8 ct[4];//计数器通道是否存盘，0禁止，1允许
	I8 ec[2];//编码器数据是否存盘，0禁止，1允许
	I8 daqTimeCnt;//采集时间段个数
	U32 savelength; //存盘数据量控制
	DaqTime* daqTime; //时间段起止时间
	U32 saveCtrlDport;//存盘控制信号端口(数字)
	U32 saveCtrlDvalue;//存盘控制信号值(数字)
	U32 saveCtrlAport;//存盘控制信号端口(模拟)
	I32 saveCtrlAvalue;//存盘控制信号值(模拟)
	U32 saveMode;//存储空间不足时处理模式选择
	U16 doAsDaqState;//DO输出作为采集状态输出端口
	U16 doAsSaveState;//DO输出作为存储状态输出端口
}SDSet;

typedef struct SDINFO{
	time_t startTime;
	U32 nowBC;//当前文件字节个数
	char firstFileName[256];//第一个文件的文件名，如果磁盘空间不够，则删除此文件后继续存储
	char nowFileName[256];//本次启动时建立的文件的文件名
	I16 fileInx;//文件序号
	pthread_mutex_t splSD;
	U32 startSec;
	U32 stopSec;
	U8 isOfflineTV;//1表示使用时间间隔来决定是否存盘，0表示使用系统默认 2014-04-20 ZCD
	U16 offlineTV;//存盘时间间隔 2014-04-20 ZCD
	time_t saveStart;//上一次存盘开始的时间 2014-04-20 ZCD
}SDInfo;

#define FILE_MAX_SIZE		200*1024*1024
#define FILE_MAX_TIME		1*60*60

#ifdef __cplusplus
extern "C"
{
#endif
	int SDGetDaqsetFromFile( FILE* f, SDSet* pSet );
	int SDVerifySet( SDSet* pSet );
	int SDRemainSize();
	FILE* SDFileCreateWriteHeader( SDSet* pSD, SDInfo* pSDInfo );

#ifdef __cplusplus
}
#endif

#endif
